package server;

import java.io.*;
import java.net.Socket;

public class AtendeEscritor implements Runnable {

    private Socket s;
    private String path;
    private String mensagem;
    private String remetente;
    private String destinatario;
    private int cont = 0;

    AtendeEscritor(Socket server) {
        this.s = server;
    }

    public void run() {
        try {

            DataInputStream in = new DataInputStream(s.getInputStream());
            DataOutputStream out = new DataOutputStream(s.getOutputStream());
            String msg = "";

            boolean pronto = false;
            while (!pronto) {

                //Cria um BufferedReader para o canal da stream de entrada de dados do socket s
                String mensagem = in.readUTF();

                try {
                    if (mensagem.contains("TO:")) {
                        String[] partes = mensagem.split(":");
                        remetente = partes[1];
                        System.out.println("Remetente: " + remetente);
                    }
                    if (mensagem.contains("FROM:")) {
                        String[] partes = mensagem.split(":");
                        destinatario = partes[1];
                        System.out.println("Destinatario: " + destinatario);
                    }
                    if (mensagem.contains("MSG:")) {
                        String[] partes = mensagem.split(":");
                        msg = partes[1];
                        System.out.println("Mensagem: " + partes[1]);
                    }
                    if (mensagem.contains("bye")) {
                        path = System.getProperty("user.home") + System.getProperty("file.separator") + remetente + System.getProperty("file.separator");
                        System.out.println(path);
                        try{
                            File dir = new File(path);
                            if(dir.mkdir()) {
                                FileWriter arquivo = new FileWriter(path + remetente + "-mensagem" + (dir.list().length) + ".txt");
                                BufferedWriter buffer = new BufferedWriter(arquivo);
                                buffer.write(msg);
                                buffer.close();
                            } else if (dir.exists()) {
                                FileWriter arquivo = new FileWriter(path + remetente + "-mensagem" + (dir.list().length) + ".txt");
                                BufferedWriter buffer = new BufferedWriter(arquivo);
                                buffer.write(msg);
                                buffer.close();
                            }
                        } catch (Exception e){
                        }

                        pronto = true;
                        out.writeUTF("OK");
                    }
                } catch (IOException e) {

                }

            }
            in.close();
            out.close();
        } catch (Exception e) {
            System.out.println("Erro na thread " + e.toString());
        }
    }
}
